package com.newly.center.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.newly.common.base.entity.business.Dto.CheckRecordDto;
import com.newly.common.base.entity.business.Dto.DataQueryDto;
import com.newly.common.base.entity.business.Po.CheckRecord;
import com.newly.common.base.entity.business.Vo.*;
import com.newly.common.core.utils.PageUtil;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @anthor sbq
 * @date 2021/11/4 10:56
 */
public interface CheckRecordService extends IService<CheckRecord> {

    /**
     * 导出检测记录
     * @param response
     * @param dataQueryDto
     */
    void export(HttpServletResponse response, DataQueryDto dataQueryDto);

    /**
     * 分页查询检测记录
     * @param warningDto 筛选条件
     * @return
     */
    PageUtil getPage(DataQueryDto warningDto);

    /**
     * 根据id获取详情
     * @param id
     * @return
     */
    DetailsVo<CheckRecordVo> getDetailsById(Integer id);

    /**
     * 编辑
     * @param checkRecord
     * @return
     */
    void audit(CheckRecord checkRecord);

    /**
     * 获取最新的十条记录--大屏
     * @return
     */
    List<RealTimeVo> getRealTimeData(Integer limit);

    /**
     * 获取最近X天超重次数排行前十条--大屏
     * @return
     */
    List<OverweightRankingVo> getOverweightRanking(List<CheckRecordVo> checkRecordVos);

    /**
     * 根据条件获取超重记录--带有站点名称属性
     * @param checkRecordDto
     * @return
     */
    List<CheckRecord> getListByCondition(CheckRecordDto checkRecordDto);

    /**
     * 从redis获取动态的标重和超重系数，计算超出重量和超重率
     * @param checkRecordVos
     * @return
     */
    List<CheckRecordVo> cover(List<CheckRecordVo> checkRecordVos);

    /**
     * 最近X天走势--大屏
     * @param checkRecordVos
     * @param offset 偏移量
     * @return
     */
    List<LastXDayTrendVo> trend(List<CheckRecordVo> checkRecordVos, Integer offset);

    /**
     * 最近X超重次数统计--大屏
     * @param checkRecordVos
     * @param offset 偏移量
     * @return
     */
    List<LastXDayOverweightVo> Overweight(List<CheckRecordVo> checkRecordVos, Integer offset);

    /**
     * 最近X天总排行--大屏
     * @param checkRecordVos
     * @return
     */
    List<LastXDayRankingVo> Ranking(List<CheckRecordVo> checkRecordVos);

    /**
     * 最近X天轴数超重统计--大屏
     * @param checkRecordVos
     * @return
     */
    List<AxleCountVo> axleCount(List<CheckRecordVo> checkRecordVos);

}
